Modern computer systems may have multiple processors. A computer system having multiple processors may be connected to multiple devices, each of which may generate device interrupts to communicate information to the computer system. The computer system includes a scheduler that attempts to balance work load between the processors. As a result, schedulers frequently assign interrupts to one processing device, and handle other work on remaining processing devices.
A virtual machine running on a host computer system that has multiple processors may have multiple virtual processors. Each of the virtual machine's virtual processors runs on a specific hardware processor of the host. A virtual machine includes its own scheduler, which assigns specific virtual processors to handle device interrupts from one or more devices. It is often the case that the virtual processor that the virtual machine's scheduler has assigned to handle device interrupts for a device runs on a first hardware processor that is different from a second hardware processor that the host's scheduler has assigned to handle device interrupts for that device. As a result, the second hardware processor receives interrupts for the device, and then generates inter-processor interrupts to forward the device interrupts to the first processing device. This can introduce overhead for the processing of device interrupts.